#include "primelists.h"

namespace hehub {

const std::vector<std::vector<u64>> prime_lists{
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {132710401, 132120577, 131923969, 131530753, 130809857,
     130744321, 128253953, 127795201, 127664129, 126615553,
     126222337, 126025729, 125698049, 125632513, 125042689,
     123863041, 123535361, 122355713, 121569281, 120586241},
    {268369921, 268238849, 268042241, 267059201, 265486337,
     265420801, 264634369, 264306689, 263913473, 263454721,
     263323649, 263258113, 261947393, 261881857, 261488641,
     260898817, 260702209, 260571137, 258605057, 257949697},
    {536608769, 536543233, 536215553, 535756801, 535232513,
     534970369, 533790721, 533463041, 532873217, 532283393,
     531628033, 529924097, 529727489, 529268737, 528351233,
     526712833, 526123009, 525729793, 524943361, 524812289},
    {1073479681, 1072496641, 1071513601, 1070727169, 1069219841,
     1068564481, 1068433409, 1068236801, 1065811969, 1065484289,
     1064697857, 1063452673, 1063321601, 1063059457, 1062862849,
     1062535169, 1062469633, 1061093377, 1060765697, 1060700161},
    {2147352577, 2146959361, 2146041857, 2145976321, 2144796673,
     2144468993, 2144010241, 2143092737, 2142830593, 2142502913,
     2142044161, 2138767361, 2135818241, 2135162881, 2135031809,
     2134638593, 2134048769, 2132869121, 2132279297, 2130706433},
    {4293918721, 4292804609, 4292149249, 4292018177, 4291952641,
     4289462273, 4288806913, 4288086017, 4287823873, 4286709761,
     4286251009, 4286054401, 4285464577, 4284874753, 4284088321,
     4283301889, 4281204737, 4281008129, 4280156161, 4280025089},
    {8589475841, 8589279233, 8588886017, 8588820481, 8588230657,
     8586854401, 8586723329, 8586330113, 8585936897, 8585084929,
     8584757249, 8583774209, 8583708673, 8582004737, 8581349377,
     8581021697, 8580759553, 8578072577, 8578007041, 8576040961},
    {17179672577, 17179410433, 17176854529, 17175674881, 17174691841,
     17173774337, 17172791297, 17172594689, 17171546113, 17171218433,
     17170759681, 17168662529, 17167482881, 17167024129, 17166893057,
     17165516801, 17164730369, 17164664833, 17164337153, 17163747329},
    {34359410689, 34359214081, 34357444609, 34357116929, 34356068353,
     34355478529, 34355085313, 34353512449, 34353184769, 34352398337,
     34351742977, 34350039041, 34349187073, 34348269569, 34347089921,
     34346827777, 34346434561, 34346106881, 34345517057, 34345254913},
    {68718428161, 68714954753, 68713512961, 68712923137, 68712202241,
     68712005633, 68711415809, 68711350273, 68710039553, 68709974017,
     68709580801, 68709253121, 68709056513, 68708794369, 68707680257,
     68706631681, 68706435073, 68705320961, 68703748097, 68703158273},
    {137438822401, 137438691329, 137437511681, 137436659713, 137434103809,
     137433317377, 137432989697, 137431351297, 137431023617, 137429188609,
     137429057537, 137428795393, 137427484673, 137427222529, 137426042881,
     137425125377, 137424732161, 137422962689, 137422897153, 137421586433},
    {274876334081, 274874695681, 274873778177, 274873188353, 274873122817,
     274872795137, 274872598529, 274870566913, 274870435841, 274869583873,
     274868207617, 274866307073, 274864275457, 274862964737, 274862768129,
     274860146689, 274859753473, 274858639361, 274857000961, 274856476673},
    {549755486209, 549754109953, 549753978881, 549753782273, 549753716737,
     549753389057, 549753192449, 549750833153, 549749850113, 549749456897,
     549749391361, 549748604929, 549747425281, 549746835457, 549746507777,
     549745852417, 549741723649, 549741330433, 549740740609, 549740347393},
    {1099510054913, 1099507695617, 1099506515969, 1099504549889, 1099503894529,
     1099503370241, 1099502714881, 1099502518273, 1099501731841, 1099500814337,
     1099500617729, 1099500421121, 1099499765761, 1099499569153, 1099499175937,
     1099498258433, 1099497799681, 1099493343233, 1099491770369, 1099490000897},
    {2199023190017, 2199022927873, 2199022010369, 2199021813761, 2199021617153,
     2199021355009, 2199021223937, 2199020634113, 2199019257857, 2199018864641,
     2199018405889, 2199016636417, 2199016308737, 2199016243201, 2199014277121,
     2199013752833, 2199013294081, 2199012966401, 2199011131393, 2199010213889},
    {4398044938241, 4398043496449, 4398042972161, 4398042513409, 4398042185729,
     4398038450177, 4398037794817, 4398035304449, 4398034911233, 4398034845697,
     4398034649089, 4398033862657, 4398032551937, 4398031503361, 4398029537281,
     4398029340673, 4398028029953, 4398027964417, 4398027440129, 4398026784769},
    {8796090597377, 8796090007553, 8796087582721, 8796087386113, 8796087255041,
     8796087058433, 8796086403073, 8796085420033, 8796084043777, 8796082667521,
     8796082470913, 8796082339841, 8796079915009, 8796079783937, 8796079718401,
     8796078735361, 8796077228033, 8796073689089, 8796071854081, 8796070936577},
    {17592182833153, 17592182243329, 17592181260289, 17592181129217,
     17592180736001, 17592180539393, 17592179097601, 17592178507777,
     17592178180097, 17592175624193, 17592174968833, 17592174575617,
     17592174247937, 17592173068289, 17592173002753, 17592172412929,
     17592171692033, 17592168153089, 17592167170049, 17592166711297},
    {35184368877569, 35184368025601, 35184367828993, 35184366911489,
     35184365273089, 35184365076481, 35184363569153, 35184362979329,
     35184362192897, 35184361799681, 35184358850561, 35184357081089,
     35184355704833, 35184355115009, 35184354459649, 35184353083393,
     35184351772673, 35184350789633, 35184350330881},
    {70368743587841, 70368742408193, 70368740769793, 70368740442113,
     70368739065857, 70368738410497, 70368737230849, 70368737034241,
     70368736706561, 70368734543873, 70368732774401, 70368732184577,
     70368728383489, 70368727990273, 70368725893121, 70368723927041,
     70368723337217, 70368722485249, 70368721764353, 70368720388097},
    {140737487306753, 140737486716929, 140737486520321, 140737485864961,
     140737484685313, 140737483898881, 140737482981377, 140737481801729,
     140737481342977, 140737480949761, 140737480359937, 140737479639041,
     140737476100097, 140737472299009, 140737471971329, 140737471774721,
     140737471578113, 140737471512577, 140737471119361, 140737470791681},
    {281474976317441, 281474975662081, 281474974482433, 281474972188673,
     281474971926529, 281474971533313, 281474966880257, 281474966683649,
     281474962554881, 281474961309697, 281474960392193, 281474960326657,
     281474957180929, 281474956066817, 281474955804673, 281474955673601,
     281474955476993, 281474953838593, 281474952462337, 281474951086081},
    {562949952700417, 562949951979521, 562949950537729, 562949948833793,
     562949948440577, 562949948178433, 562949947260929, 562949947195393,
     562949945622529, 562949944508417, 562949942673409, 562949942345729,
     562949941952513, 562949940379649, 562949939986433, 562949938937857,
     562949937364993, 562949936054273, 562949935071233, 562949934415873},
    {1125899904679937, 1125899903827969, 1125899903500289, 1125899903107073,
     1125899902124033, 1125899901665281, 1125899899174913, 1125899896160257,
     1125899887312897, 1125899886395393, 1125899885740033, 1125899885412353,
     1125899884625921, 1125899884167169, 1125899884036097, 1125899883642881,
     1125899883380737, 1125899882987521, 1125899881086977, 1125899879710721},
    {2251799813554177, 2251799811391489, 2251799810670593, 2251799810605057,
     2251799809884161, 2251799809294337, 2251799807131649, 2251799806345217,
     2251799805165569, 2251799805100033, 2251799804313601, 2251799802216449,
     2251799799463937, 2251799799267329, 2251799797432321, 2251799795531777,
     2251799795466241, 2251799791403009, 2251799789568001, 2251799788060673},
    {4503599626321921, 4503599625535489, 4503599625404417, 4503599623045121,
     4503599621472257, 4503599619112961, 4503599618260993, 4503599616688129,
     4503599615311873, 4503599614722049, 4503599614328833, 4503599613214721,
     4503599610265601, 4503599610003457, 4503599607840769, 4503599607644161,
     4503599607513089, 4503599606661121, 4503599605350401, 4503599604891649},
    {9007199252840449, 9007199252119553, 9007199251660801, 9007199250874369,
     9007199250481153, 9007199250087937, 9007199249891329, 9007199248777217,
     9007199247532033, 9007199247400961, 9007199247138817, 9007199246417921,
     9007199245565953, 9007199243993089, 9007199242813441, 9007199241306113,
     9007199240847361, 9007199240060929, 9007199239340033, 9007199239077889},
    {18014398506729473, 18014398505943041, 18014398499848193,
     18014398498799617, 18014398498275329, 18014398496440321,
     18014398496243713, 18014398495457281, 18014398492704769,
     18014398492311553, 18014398491918337, 18014398490017793,
     18014398489755649, 18014398487068673, 18014398485823489,
     18014398485495809, 18014398484316161, 18014398483857409,
     18014398480187393, 18014398479204353},
    {36028797017456641, 36028797014704129, 36028797014573057,
     36028797014376449, 36028797013327873, 36028797013000193,
     36028797012606977, 36028797010444289, 36028797009985537,
     36028797005856769, 36028797005529089, 36028797005135873,
     36028797003694081, 36028797003563009, 36028797001138177,
     36028796998844417, 36028796997664769, 36028796997599233,
     36028796996681729, 36028796995829761},
    {72057594037338113, 72057594036879361, 72057594036551681,
     72057594035306497, 72057594034913281, 72057594033012737,
     72057594031964161, 72057594030981121, 72057594029015041,
     72057594027704321, 72057594027245569, 72057594023903233,
     72057594021609473, 72057594021150721, 72057594020626433,
     72057594014662657, 72057594013483009, 72057594011189249,
     72057594007584769, 72057594006863873},
    {144115188075593729, 144115188075134977, 144115188070809601,
     144115188070023169, 144115188068319233, 144115188068253697,
     144115188067729409, 144115188066091009, 144115188065959937,
     144115188065566721, 144115188063338497, 144115188062814209,
     44115188062617601,  144115188061634561, 144115188059865089,
     144115188057243649, 144115188055736321, 144115188053114881,
     144115188052983809, 144115188050952193},
    {288230376147582977, 288230376147386369, 288230376147320833,
     288230376144568321, 288230376143781889, 288230376143650817,
     288230376138735617, 288230376135917569, 288230376135196673,
     288230376134606849, 288230376133427201, 288230376132182017,
     288230376131854337, 288230376131788801, 288230376129691649,
     288230376129232897, 88230376128839681,  288230376128643073,
     288230376126742529, 288230376126545921},
    {576460752301785089, 576460752301391873, 576460752300015617,
     576460752298835969, 576460752298180609, 576460752293134337,
     576460752291954689, 576460752290775041, 576460752290119681,
     576460752289923073, 576460752289529857, 576460752289005569,
     576460752288940033, 576460752286253057, 576460752284418049,
     576460752280158209, 576460752279764993, 576460752279306241,
     576460752273801217, 576460752272228353}};

} // namespace hehub
